import { createPinia } from 'pinia'
import { defineStore } from 'pinia'
import axios from 'axios'

// 创建 axios 实例（连接本地服务器）
const api = axios.create({
  baseURL: 'http://localhost:3000'
})

// 定义全局状态
export const useStore = defineStore('main', {
  state: () => ({
    user: null,  // 当前登录用户
    products: [],  // 商品列表
    cart: []  // 购物车数据
  }),
  actions: {
    // 1. 获取所有商品
    async fetchProducts() {
      const res = await api.get('/products')
      this.products = res.data
    },
    // 2. 登录
    async login(username, password) {
      const res = await api.get(`/users?username=${username}&password=${password}`)
      if (res.data.length) {
        this.user = res.data[0]  // 保存用户信息
        this.cart = this.user.cart  // 同步购物车
        return true  // 登录成功
      }
      return false  // 登录失败
    },
    // 3. 注册
    async register(username, password) {
      // 检查用户名是否已存在
      const users = await api.get(`/users?username=${username}`)
      if (users.data.length) return false  // 用户名已存在

      // 创建新用户
      const res = await api.post('/users', { username, password, cart: [] })
      this.user = res.data
      this.cart = []
      return true  // 注册成功
    },
    // 4. 添加商品到购物车
    async addToCart(product) {
      if (!this.user) return false  // 未登录不允许操作

      // 检查商品是否已在购物车
      const item = this.cart.find(i => i.id === product.id)
      if (item) {
        item.quantity++  // 已存在则数量+1
      } else {
        this.cart.push({ ...product, quantity: 1 })  // 新增商品
      }

      // 同步到服务器（更新用户的 cart 字段）
      await api.patch(`/users/${this.user.id}`, { cart: this.cart })
      return true
    },
    // 5. 从购物车删除商品
    async removeFromCart(productId) {
      this.cart = this.cart.filter(item => item.id !== productId)
      await api.patch(`/users/${this.user.id}`, { cart: this.cart })
    }
  }
})

export default createPinia()
